package pe.gob.mininter.dirandro.vaadin.panel.parte;

import java.math.BigDecimal;
import java.util.List;

import org.apache.commons.lang.StringUtils;

import pe.gob.mininter.dirandro.model.Droga;
import pe.gob.mininter.dirandro.model.Expediente;
import pe.gob.mininter.dirandro.model.ModeloMarca;
import pe.gob.mininter.dirandro.model.Pais;
import pe.gob.mininter.dirandro.service.DrogaService;
import pe.gob.mininter.dirandro.service.ModeloMarcaService;
import pe.gob.mininter.dirandro.service.PaisService;
import pe.gob.mininter.dirandro.util.Constante;
import pe.gob.mininter.dirandro.util.HarecUtil;
import pe.gob.mininter.dirandro.vaadin.dialogs.AlertDialog;
import pe.gob.mininter.dirandro.vaadin.panel.PanelDetalleDroga;
import pe.gob.mininter.dirandro.vaadin.util.ComboBoxLOVS;
import pe.gob.mininter.dirandro.vaadin.util.Injector;

import com.vaadin.annotations.AutoGenerated;
import com.vaadin.data.Item;
import com.vaadin.data.Property.ValueChangeEvent;
import com.vaadin.data.Property.ValueChangeListener;
import com.vaadin.data.util.BeanItemContainer;
import com.vaadin.data.util.IndexedContainer;
import com.vaadin.ui.AbstractSelect.ItemDescriptionGenerator;
import com.vaadin.ui.Alignment;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Button.ClickListener;
import com.vaadin.ui.ComboBox;
import com.vaadin.ui.Component;
import com.vaadin.ui.CustomComponent;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.Table;
import com.vaadin.ui.TextArea;
import com.vaadin.ui.TextField;
import com.vaadin.ui.VerticalLayout;
import com.vaadin.ui.Window;

public class PanelRegistroParteSustancia extends CustomComponent implements ClickListener, ItemDescriptionGenerator {

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	@AutoGenerated
	private VerticalLayout mainLayout;

	@AutoGenerated
	private VerticalLayout verticalLayout_2;

	@AutoGenerated
	private Table tblSustancias;

	@AutoGenerated
	private Button btnDrRegistrar;

	@AutoGenerated
	private HorizontalLayout horizontalLayout_19;

	@AutoGenerated
	private TextArea txtDrObservaciones;

	@AutoGenerated
	private HorizontalLayout horizontalLayout_17;

	@AutoGenerated
	private ComboBoxLOVS cmbSituacion;

	@AutoGenerated
	private ComboBox cmbDestino;

	@AutoGenerated
	private ComboBox cmbProcedencia;

	@AutoGenerated
	private HorizontalLayout horizontalLayout_15;

	@AutoGenerated
	private TextField txtDrTipoCambio;

	@AutoGenerated
	private TextField txtDrValorDolares;

	@AutoGenerated
	private TextField txtDrValorSoles;

	@AutoGenerated
	private TextField txtDrPesoMuestra;

	@AutoGenerated
	private ComboBox cmbMedidaMuestra;

	@AutoGenerated
	private ComboBox cmbTipoMedidaMuestra;

	@AutoGenerated
	private HorizontalLayout horizontalLayout_14;

	@AutoGenerated
	private TextField txtPesoNeto;

	@AutoGenerated
	private TextField txtPesoBruto;

	@AutoGenerated
	private ComboBox cmbMedida;

	@AutoGenerated
	private ComboBox cmbTipoMedida;

	@AutoGenerated
	private ComboBox cmbSubTipoDroga;

	@AutoGenerated
	private ComboBox cmbTipoDroga;

	private static final long serialVersionUID = -2727080337351223030L;	

	private ModeloMarcaService modeloMarcaService;
	private PaisService paisService;
	private DrogaService drogaService;
	private Expediente expediente;
	private IndexedContainer container;
	
	private List<ModeloMarca> lstMedidas;

	private static final String COLUMN_TIPO_DROGA = "COLUMN_TIPO_DROGA";
	private static final String COLUMN_TIPO_MEDIDA = "COLUMN_TIPO_MEDIDA";
	private static final String COLUMN_PESO_BRUTO = "COLUMN_PESO_BRUTO";
	private static final String COLUMN_PESO_NETO = "COLUMN_PESO_NETO";
	private static final String COLUMN_SITUACION = "COLUMN_SITUACION";
	private static final String COLUMN_MEDIDA_MUESTRA = "COLUMN_MEDIDA_MUESTRA";
	private static final String COLUMN_SOLES = "COLUMN_SOLES";
	private static final String COLUMN_DOLARES = "COLUMN_DOLARES";
	private static final String COLUMN_CAMBIO = "COLUMN_CAMBIO";
	private static final String COLUMN_PROCEDENCIA = "COLUMN_PROCEDENCIA";
	private static final String COLUMN_DESTINO = "COLUMN_DESTINO";
	private static final String COLUMN_DROGA = "COLUMN_DROGA";
	private static final String COLUMN_DETALLE = "COLUMN_DETALLE";
	
	private boolean inicializado=false;
	private List<ModeloMarca> lstSubTiposDroga;
	
	public PanelRegistroParteSustancia() {
		buildMainLayout();
		modeloMarcaService = Injector.obtenerServicio(ModeloMarcaService.class);
		paisService = Injector.obtenerServicio(PaisService.class);
		drogaService = Injector.obtenerServicio(DrogaService.class);
		setCompositionRoot(mainLayout);
		postConstruct();
	}

	public void postConstruct() {
		if(expediente!=null && !expediente.esNuevo() && !inicializado){
			cmbProcedencia.setInputPrompt("Procedencia de la Droga");
			cmbDestino.setInputPrompt("Destino de la Droga");
			cmbTipoMedida.setInputPrompt("Tipo de Medida");
			cmbMedida.setInputPrompt("Medida de la Droga");
			cmbTipoMedidaMuestra.setInputPrompt("Tipo de Medida");
			cmbMedidaMuestra.setInputPrompt("Medida de la Muestra");
			cmbSituacion.setInputPrompt("Situacion de la Droga");
			cmbTipoDroga.setInputPrompt("Tipo de Droga");			
			cmbSubTipoDroga.setInputPrompt("Sub Tipo");
			
			List<ModeloMarca> lstTiposDrogas = modeloMarcaService.buscarHijos(new ModeloMarca(Constante.MODELO_MARCA.DROGAS.TIPOS));
			cmbTipoDroga.setContainerDataSource(new BeanItemContainer<ModeloMarca>(ModeloMarca.class,  lstTiposDrogas));
			cmbTipoDroga.setItemCaptionPropertyId("nombre");
			cmbTipoDroga.setImmediate(true);
			
			cmbTipoDroga.addListener(new ValueChangeListener() {            
				private static final long serialVersionUID = 1L;
				@Override
	            public void valueChange(ValueChangeEvent event) {				 
					lstSubTiposDroga = modeloMarcaService.buscarHijos((ModeloMarca) cmbTipoDroga.getValue());
					cmbSubTipoDroga.setContainerDataSource(new BeanItemContainer<ModeloMarca>(ModeloMarca.class,lstSubTiposDroga));
					cmbSubTipoDroga.setItemCaptionPropertyId("nombre");
	            }
	        });
			
			cmbSituacion.setCodigoLista(Constante.LISTA.CODIGO.SITUACION_GENERAL);
			cmbSituacion.attach();
	
			List<ModeloMarca> lstTiposMedidas = modeloMarcaService.buscarHijos(new ModeloMarca(Constante.MODELO_MARCA.MEDIDA.COD_MEDIDA));
			
			List<Pais> paises = paisService.buscar(new Pais());
	
			cargarCmbTipoMedida(lstTiposMedidas);
			cargarCmbMedidaMuestra(lstTiposMedidas);
			cargarCmbProcedencia(paises);
			cargarCmbDestino(paises);
	
			containerTabla();
	
			btnDrRegistrar.addListener((ClickListener) this);
			//TODO: Arreglar para que sea predefinido
			//cmbTipoMedida.select(new ModeloMarca(4002l));
			
			tblSustancias.setSelectable(true);
			tblSustancias.setImmediate(true);
			tblSustancias.setNullSelectionAllowed(true);
			tblSustancias.setNullSelectionItemId(null);
			tblSustancias.addListener(new ValueChangeListener() {
				
				private static final long serialVersionUID = -6372707443871326807L;

				@Override
				public void valueChange(ValueChangeEvent event) {
					// TODO Auto-generated method stub
					
				}
			});
			
			cargarDrogas();
			
			inicializado=true;
		}
	}

	@Override
	public void attach() {
		super.attach();
	}

	public void setExpediente(Expediente expediente) {
		this.expediente = expediente;
		postConstruct();
	}

	private void containerTabla() {

		this.container = new IndexedContainer();

		container.addContainerProperty(COLUMN_TIPO_DROGA, String.class, null);
		container.addContainerProperty(COLUMN_TIPO_MEDIDA, String.class, null);
		container.addContainerProperty(COLUMN_PESO_BRUTO, BigDecimal.class,null);
		container.addContainerProperty(COLUMN_PESO_NETO, BigDecimal.class, null);
		container.addContainerProperty(COLUMN_SITUACION, String.class, null);
		container.addContainerProperty(COLUMN_MEDIDA_MUESTRA, String.class,null);
		container.addContainerProperty(COLUMN_SOLES, BigDecimal.class, null);
		container.addContainerProperty(COLUMN_DOLARES, BigDecimal.class, null);
		container.addContainerProperty(COLUMN_CAMBIO, BigDecimal.class, null);
		container.addContainerProperty(COLUMN_PROCEDENCIA, String.class, null);
		container.addContainerProperty(COLUMN_DESTINO, String.class, null);
		container.addContainerProperty(COLUMN_DROGA, Droga.class, null);
		container.addContainerProperty(COLUMN_DETALLE, Button.class, null);

		tblSustancias.setContainerDataSource(container);

		tblSustancias.setColumnHeader(COLUMN_TIPO_DROGA, "Tipo Droga");
		tblSustancias.setColumnHeader(COLUMN_TIPO_MEDIDA, "Tipo Medida");
		tblSustancias.setColumnHeader(COLUMN_PESO_BRUTO, "P. Bruto");
		tblSustancias.setColumnHeader(COLUMN_PESO_NETO, "P. Neto");
		tblSustancias.setColumnHeader(COLUMN_SITUACION, "Situación");
		tblSustancias.setColumnHeader(COLUMN_MEDIDA_MUESTRA, "Medida Muestra");
		tblSustancias.setColumnHeader(COLUMN_SOLES, "Soles");
		tblSustancias.setColumnHeader(COLUMN_DOLARES, "Dolares");
		tblSustancias.setColumnHeader(COLUMN_CAMBIO, "Cambio");
		tblSustancias.setColumnHeader(COLUMN_PROCEDENCIA, "Procedencia");
		tblSustancias.setColumnHeader(COLUMN_DESTINO, "Destino");
		tblSustancias.setColumnHeader(COLUMN_DETALLE, "Registrar Detalle");

		tblSustancias.setVisibleColumns(new Object[] { COLUMN_TIPO_DROGA,
				COLUMN_TIPO_MEDIDA, COLUMN_PESO_BRUTO, COLUMN_PESO_NETO,
				COLUMN_SITUACION, COLUMN_MEDIDA_MUESTRA, COLUMN_PROCEDENCIA,
				COLUMN_DESTINO, COLUMN_DETALLE });

		tblSustancias.setColumnWidth(COLUMN_TIPO_DROGA, 100);
		tblSustancias.setColumnWidth(COLUMN_TIPO_MEDIDA, 100);
		tblSustancias.setColumnWidth(COLUMN_PESO_BRUTO, 45);
		tblSustancias.setColumnWidth(COLUMN_PESO_NETO, 45);
		tblSustancias.setColumnWidth(COLUMN_SITUACION, 100);
		tblSustancias.setColumnWidth(COLUMN_MEDIDA_MUESTRA, 100);
		tblSustancias.setColumnWidth(COLUMN_SOLES, 45);
		tblSustancias.setColumnWidth(COLUMN_DOLARES, 45);
		tblSustancias.setColumnWidth(COLUMN_CAMBIO, 45);
		tblSustancias.setColumnWidth(COLUMN_PROCEDENCIA, 100);
		tblSustancias.setColumnWidth(COLUMN_DESTINO, 100);
		
		tblSustancias.setItemDescriptionGenerator( (ItemDescriptionGenerator) this);

	}
	
	@Override
	public String generateDescription(Component source, Object itemId, Object propertyId) {
		Item item=tblSustancias.getItem(itemId);
		Droga droga = (Droga) item.getItemProperty(COLUMN_DROGA).getValue();
		if(droga!=null)
			return droga.getObservacion();
		return "";
	}

	private void cargarDrogas() {
		List<Droga> drogas = drogaService.obtenerDrogasExpediente(expediente);

		container.removeAllItems();
		
		if(drogas!=null)
		for (Droga droga : drogas) {
			Item item = container.addItem(droga.getId());
			item.getItemProperty(COLUMN_TIPO_DROGA).setValue(HarecUtil.marcaModeloNombreToEmpty(droga.getTipoDroga()));
			item.getItemProperty(COLUMN_TIPO_MEDIDA).setValue(HarecUtil.marcaModeloNombreToEmpty(droga.getTipoMedida()));
			item.getItemProperty(COLUMN_PESO_BRUTO).setValue(droga.getPesoBruto());
			item.getItemProperty(COLUMN_PESO_NETO).setValue(droga.getPesoNeto());
			item.getItemProperty(COLUMN_SITUACION).setValue(HarecUtil.valorNombreToEmpty(droga.getSituaccion()));
			item.getItemProperty(COLUMN_MEDIDA_MUESTRA).setValue(HarecUtil.marcaModeloNombreToEmpty(droga.getTipoMedidaMuestra()));
			item.getItemProperty(COLUMN_SOLES).setValue(droga.getValorSoles());
			item.getItemProperty(COLUMN_DOLARES).setValue(droga.getValorDolares());
			item.getItemProperty(COLUMN_CAMBIO).setValue(droga.getTipoCambio());
			item.getItemProperty(COLUMN_PROCEDENCIA).setValue(HarecUtil.paisNombreToEmpty(droga.getProcedencia()));
			item.getItemProperty(COLUMN_DESTINO).setValue(HarecUtil.paisNombreToEmpty(droga.getDestino()));
			item.getItemProperty(COLUMN_DROGA).setValue(droga);
			Button detalle = new Button();
			detalle.setCaption("Detalle");
			detalle.setData(droga);
			detalle.addListener(new ClickListener() {
				
				private static final long serialVersionUID = 688255660681167152L;

				@Override
				public void buttonClick(ClickEvent event) {
					PanelDetalleDroga pnlDetalleDroga = new PanelDetalleDroga();
					pnlDetalleDroga.recibirDroga((Droga) event.getButton().getData());
					Window wdDetalle = new Window();
					wdDetalle.setModal(true);
					wdDetalle.setResizable(false);
					wdDetalle.addComponent(pnlDetalleDroga);
					
					wdDetalle.setCaption("Registro Detalle");
					wdDetalle.setWidth("550px");
					getApplication().getMainWindow().getWindow().addWindow(wdDetalle);
				}
			});
			item.getItemProperty(COLUMN_DETALLE).setValue(detalle);
		}

	}

	private void cargarCmbTipoMedida(List<ModeloMarca> modeloMarcas) {
		cmbTipoMedida.setContainerDataSource(new BeanItemContainer<ModeloMarca>(ModeloMarca.class, modeloMarcas));
		cmbTipoMedida.setItemCaptionPropertyId("nombre");
		cmbTipoMedida.setImmediate(true);
		cmbTipoMedida.addListener(new ValueChangeListener() {
			
			private static final long serialVersionUID = 6895028387071940789L;

			@Override
			public void valueChange(ValueChangeEvent event) {
				cmbMedida.removeAllItems();
				if (cmbTipoMedida.getValue() != null) {
					lstMedidas = modeloMarcaService.buscarHijos((ModeloMarca) cmbTipoMedida.getValue());
					cmbMedida.setContainerDataSource(new BeanItemContainer<ModeloMarca>(ModeloMarca.class,  lstMedidas));
					cmbMedida.setItemCaptionPropertyId("nombre");
				}
			}
		});
	}

	private void cargarCmbMedidaMuestra(List<ModeloMarca> modeloMarcas) {
		BeanItemContainer<ModeloMarca> containerModeloMarca = new BeanItemContainer<ModeloMarca>(ModeloMarca.class, modeloMarcas);
		cmbTipoMedidaMuestra.setContainerDataSource(containerModeloMarca);
		cmbTipoMedidaMuestra.setItemCaptionPropertyId("nombre");
		cmbTipoMedidaMuestra.addListener(new ValueChangeListener() {

			private static final long serialVersionUID = -5866812142258078601L;

			@Override
			public void valueChange(ValueChangeEvent event) {
				cmbMedidaMuestra.removeAllItems();
				if (cmbTipoMedidaMuestra.getValue() != null) {
					lstMedidas = modeloMarcaService.buscarHijos((ModeloMarca) cmbTipoMedidaMuestra.getValue());
					cmbMedidaMuestra.setContainerDataSource(new BeanItemContainer<ModeloMarca>(ModeloMarca.class,  lstMedidas));
					cmbMedidaMuestra.setItemCaptionPropertyId("nombre");
				}
			}
		});
	}

	private void cargarCmbProcedencia(List<Pais> paises) {
		BeanItemContainer<Pais> containerPaises = new BeanItemContainer<Pais>(
				Pais.class, paises);
		cmbProcedencia.setContainerDataSource(containerPaises);
		cmbProcedencia.setItemCaptionPropertyId("nombre");
	}

	private void cargarCmbDestino(List<Pais> paises) {
		BeanItemContainer<Pais> containerPaises = new BeanItemContainer<Pais>(
				Pais.class, paises);
		cmbDestino.setContainerDataSource(containerPaises);
		cmbDestino.setItemCaptionPropertyId("nombre");
	}

	@Override
	public void buttonClick(ClickEvent event) {
		if (btnDrRegistrar.equals(event.getButton())) {
			buttonClickBtnDrRegistrar();
		}
	}

	private void buttonClickBtnDrRegistrar() {
		Droga droga = new Droga();
		droga.setTipoMedida((ModeloMarca) cmbMedida.getValue());
		droga.setTipoDroga((ModeloMarca) cmbSubTipoDroga.getValue());
		droga.setPesoBruto(HarecUtil.toDouble(txtPesoBruto.getValue())); 
		droga.setPesoNeto(HarecUtil.toDouble(txtPesoBruto.getValue()));
		droga.setExpediente(expediente);
		droga.setSituaccion(cmbSituacion.getValor());
		droga.setTipoMedidaMuestra((ModeloMarca) cmbMedidaMuestra.getValue());
		droga.setPesoMuestra(HarecUtil.toDouble(txtDrPesoMuestra.getValue()));
		droga.setValorSoles(HarecUtil.toDouble(txtDrValorSoles.getValue()));
		droga.setValorDolares(HarecUtil.toDouble(txtDrValorDolares.getValue()));
		droga.setTipoCambio(HarecUtil.toDouble(txtDrTipoCambio.getValue()));
		droga.setProcedencia( (Pais) cmbProcedencia.getValue() );
		droga.setDestino( (Pais) cmbDestino.getValue() );
		droga.setObservacion((String)txtDrObservaciones.getValue());
		
		drogaService.crear(droga);
		
		AlertDialog alertDialog = new  AlertDialog("Registro de Sustancia", "Se ha registrado la sustancia correctamente", "Aceptar", "400");
		getApplication().getMainWindow().addWindow(alertDialog);
		
		cargarDrogas();
		
		limpiar();
	}

	private void limpiar() {
		cmbTipoMedida.select(null);
		txtPesoBruto.setValue(StringUtils.EMPTY);
		txtPesoNeto.setValue(StringUtils.EMPTY);
		txtPesoNeto.setValue(StringUtils.EMPTY);
		cmbTipoDroga.select(null);
		cmbSubTipoDroga.select(null);
		cmbSituacion.select(null);
		cmbMedida.select(null);
		cmbTipoMedidaMuestra.select(null);
		txtDrPesoMuestra.setValue(StringUtils.EMPTY);
		txtDrValorSoles.setValue(StringUtils.EMPTY);
		txtDrValorDolares.setValue(StringUtils.EMPTY);
		txtDrTipoCambio.setValue(StringUtils.EMPTY);
		cmbProcedencia.select(null);
		cmbDestino.select(null);
		txtDrObservaciones.setValue(StringUtils.EMPTY);
	}

	@AutoGenerated
	private VerticalLayout buildMainLayout() {
		// common part: create layout
		mainLayout = new VerticalLayout();
		mainLayout.setImmediate(false);
		mainLayout.setWidth("-1px");
		mainLayout.setHeight("-1px");
		mainLayout.setMargin(false);
		
		// top-level component properties
		setWidth("-1px");
		setHeight("-1px");
		
		// verticalLayout_2
		verticalLayout_2 = buildVerticalLayout_2();
		mainLayout.addComponent(verticalLayout_2);
		mainLayout.setComponentAlignment(verticalLayout_2, new Alignment(20));
		
		return mainLayout;
	}

	@AutoGenerated
	private VerticalLayout buildVerticalLayout_2() {
		// common part: create layout
		verticalLayout_2 = new VerticalLayout();
		verticalLayout_2.setImmediate(false);
		verticalLayout_2.setWidth("-1px");
		verticalLayout_2.setHeight("-1px");
		verticalLayout_2.setMargin(true);
		verticalLayout_2.setSpacing(true);
		
		// horizontalLayout_14
		horizontalLayout_14 = buildHorizontalLayout_14();
		verticalLayout_2.addComponent(horizontalLayout_14);
		
		// horizontalLayout_15
		horizontalLayout_15 = buildHorizontalLayout_15();
		verticalLayout_2.addComponent(horizontalLayout_15);
		
		// horizontalLayout_17
		horizontalLayout_17 = buildHorizontalLayout_17();
		verticalLayout_2.addComponent(horizontalLayout_17);
		
		// horizontalLayout_19
		horizontalLayout_19 = buildHorizontalLayout_19();
		verticalLayout_2.addComponent(horizontalLayout_19);
		
		// btnDrRegistrar
		btnDrRegistrar = new Button();
		btnDrRegistrar.setCaption("Registrar");
		btnDrRegistrar.setImmediate(true);
		btnDrRegistrar.setWidth("-1px");
		btnDrRegistrar.setHeight("-1px");
		verticalLayout_2.addComponent(btnDrRegistrar);
		verticalLayout_2.setComponentAlignment(btnDrRegistrar,
				new Alignment(20));
		
		// tblSustancias
		tblSustancias = new Table();
		tblSustancias.setImmediate(false);
		tblSustancias.setWidth("900px");
		tblSustancias.setHeight("-1px");
		verticalLayout_2.addComponent(tblSustancias);
		
		return verticalLayout_2;
	}

	@AutoGenerated
	private HorizontalLayout buildHorizontalLayout_14() {
		// common part: create layout
		horizontalLayout_14 = new HorizontalLayout();
		horizontalLayout_14.setImmediate(false);
		horizontalLayout_14.setWidth("-1px");
		horizontalLayout_14.setHeight("-1px");
		horizontalLayout_14.setMargin(false);
		horizontalLayout_14.setSpacing(true);
		
		// cmbTipoDroga
		cmbTipoDroga = new ComboBox();
		cmbTipoDroga.setCaption("Tipo de Droga");
		cmbTipoDroga.setImmediate(false);
		cmbTipoDroga.setWidth("150px");
		cmbTipoDroga.setHeight("-1px");
		cmbTipoDroga.setRequired(true);
		horizontalLayout_14.addComponent(cmbTipoDroga);
		
		// cmbSubTipoDroga
		cmbSubTipoDroga = new ComboBox();
		cmbSubTipoDroga.setCaption("Sub Tipo Droga");
		cmbSubTipoDroga.setImmediate(false);
		cmbSubTipoDroga.setWidth("150px");
		cmbSubTipoDroga.setHeight("-1px");
		cmbSubTipoDroga.setRequired(true);
		horizontalLayout_14.addComponent(cmbSubTipoDroga);
		
		// cmbTipoMedida
		cmbTipoMedida = new ComboBox();
		cmbTipoMedida.setCaption("Tipo de Medida");
		cmbTipoMedida.setImmediate(false);
		cmbTipoMedida.setWidth("130px");
		cmbTipoMedida.setHeight("-1px");
		cmbTipoMedida.setRequired(true);
		horizontalLayout_14.addComponent(cmbTipoMedida);
		
		// cmbMedida
		cmbMedida = new ComboBox();
		cmbMedida.setCaption("Medida");
		cmbMedida.setImmediate(false);
		cmbMedida.setWidth("130px");
		cmbMedida.setHeight("-1px");
		cmbMedida.setRequired(true);
		horizontalLayout_14.addComponent(cmbMedida);
		
		// txtPesoBruto
		txtPesoBruto = new TextField();
		txtPesoBruto.setCaption("Peso bruto");
		txtPesoBruto.setImmediate(false);
		txtPesoBruto.setWidth("120px");
		txtPesoBruto.setHeight("-1px");
		txtPesoBruto.setRequired(true);
		txtPesoBruto.setInputPrompt("Peso Bruto");
		horizontalLayout_14.addComponent(txtPesoBruto);
		
		// txtPesoNeto
		txtPesoNeto = new TextField();
		txtPesoNeto.setCaption("Peso neto");
		txtPesoNeto.setImmediate(false);
		txtPesoNeto.setWidth("130px");
		txtPesoNeto.setHeight("-1px");
		txtPesoNeto.setInputPrompt("Peso Neto");
		horizontalLayout_14.addComponent(txtPesoNeto);
		
		return horizontalLayout_14;
	}

	@AutoGenerated
	private HorizontalLayout buildHorizontalLayout_15() {
		// common part: create layout
		horizontalLayout_15 = new HorizontalLayout();
		horizontalLayout_15.setImmediate(false);
		horizontalLayout_15.setWidth("-1px");
		horizontalLayout_15.setHeight("-1px");
		horizontalLayout_15.setMargin(false);
		horizontalLayout_15.setSpacing(true);
		
		// cmbTipoMedidaMuestra
		cmbTipoMedidaMuestra = new ComboBox();
		cmbTipoMedidaMuestra.setCaption("Tipo de Medida Muestra");
		cmbTipoMedidaMuestra.setImmediate(false);
		cmbTipoMedidaMuestra.setWidth("180px");
		cmbTipoMedidaMuestra.setHeight("-1px");
		horizontalLayout_15.addComponent(cmbTipoMedidaMuestra);
		
		// cmbMedidaMuestra
		cmbMedidaMuestra = new ComboBox();
		cmbMedidaMuestra.setCaption("Medida Muestra");
		cmbMedidaMuestra.setImmediate(false);
		cmbMedidaMuestra.setWidth("180px");
		cmbMedidaMuestra.setHeight("-1px");
		horizontalLayout_15.addComponent(cmbMedidaMuestra);
		
		// txtDrPesoMuestra
		txtDrPesoMuestra = new TextField();
		txtDrPesoMuestra.setCaption("Peso de la muestra");
		txtDrPesoMuestra.setImmediate(false);
		txtDrPesoMuestra.setWidth("120px");
		txtDrPesoMuestra.setHeight("-1px");
		txtDrPesoMuestra.setInputPrompt("Peso de la muestra");
		horizontalLayout_15.addComponent(txtDrPesoMuestra);
		
		// txtDrValorSoles
		txtDrValorSoles = new TextField();
		txtDrValorSoles.setCaption("Valor en Soles");
		txtDrValorSoles.setImmediate(false);
		txtDrValorSoles.setWidth("130px");
		txtDrValorSoles.setHeight("-1px");
		txtDrValorSoles.setInputPrompt("Valor en Soles");
		horizontalLayout_15.addComponent(txtDrValorSoles);
		
		// txtDrValorDolares
		txtDrValorDolares = new TextField();
		txtDrValorDolares.setCaption("Valor en Dolares");
		txtDrValorDolares.setImmediate(false);
		txtDrValorDolares.setWidth("130px");
		txtDrValorDolares.setHeight("-1px");
		txtDrValorDolares.setInputPrompt("Valor en Dolares");
		horizontalLayout_15.addComponent(txtDrValorDolares);
		
		// txtDrTipoCambio
		txtDrTipoCambio = new TextField();
		txtDrTipoCambio.setCaption("Tipo de Cambio");
		txtDrTipoCambio.setImmediate(false);
		txtDrTipoCambio.setWidth("130px");
		txtDrTipoCambio.setHeight("-1px");
		txtDrTipoCambio.setInputPrompt("Tipo de Cambio");
		horizontalLayout_15.addComponent(txtDrTipoCambio);
		
		return horizontalLayout_15;
	}

	@AutoGenerated
	private HorizontalLayout buildHorizontalLayout_17() {
		// common part: create layout
		horizontalLayout_17 = new HorizontalLayout();
		horizontalLayout_17.setImmediate(false);
		horizontalLayout_17.setWidth("-1px");
		horizontalLayout_17.setHeight("-1px");
		horizontalLayout_17.setMargin(false);
		horizontalLayout_17.setSpacing(true);
		
		// cmbProcedencia
		cmbProcedencia = new ComboBox();
		cmbProcedencia.setCaption("Procedencia");
		cmbProcedencia.setImmediate(false);
		cmbProcedencia.setWidth("350px");
		cmbProcedencia.setHeight("-1px");
		cmbProcedencia.setRequired(true);
		horizontalLayout_17.addComponent(cmbProcedencia);
		
		// cmbDestino
		cmbDestino = new ComboBox();
		cmbDestino.setCaption("Destino");
		cmbDestino.setImmediate(false);
		cmbDestino.setWidth("350px");
		cmbDestino.setHeight("-1px");
		horizontalLayout_17.addComponent(cmbDestino);
		
		// cmbSituacion
		cmbSituacion = new ComboBoxLOVS();
		cmbSituacion.setCaption("Situacion");
		cmbSituacion.setImmediate(false);
		cmbSituacion.setWidth("-1px");
		cmbSituacion.setHeight("-1px");
		horizontalLayout_17.addComponent(cmbSituacion);
		
		return horizontalLayout_17;
	}

	@AutoGenerated
	private HorizontalLayout buildHorizontalLayout_19() {
		// common part: create layout
		horizontalLayout_19 = new HorizontalLayout();
		horizontalLayout_19.setImmediate(false);
		horizontalLayout_19.setWidth("-1px");
		horizontalLayout_19.setHeight("-1px");
		horizontalLayout_19.setMargin(false);
		horizontalLayout_19.setSpacing(true);
		
		// txtDrObservaciones
		txtDrObservaciones = new TextArea();
		txtDrObservaciones.setCaption("Observaciones de la Droga Incautada");
		txtDrObservaciones.setImmediate(false);
		txtDrObservaciones.setWidth("900px");
		txtDrObservaciones.setHeight("70px");
		txtDrObservaciones.setInputPrompt("Observaciones");
		txtDrObservaciones.setMaxLength(500);
		horizontalLayout_19.addComponent(txtDrObservaciones);
		
		return horizontalLayout_19;
	}

}
